package co.edu.eam.persitencia.entidades;

import java.io.Serializable;
import java.lang.Long;
import java.lang.String;
import java.util.List;

import javax.persistence.*;

import static javax.persistence.FetchType.LAZY;

@NamedQueries({
    @NamedQuery(name=Especialidad.CONSULTA_LISTAR_ESPECIALIDAD,query=("SELECT especialidad FROM Especialidad especialidad")),
})

@Entity
@Table(name="clinica_especialidad")
public class Especialidad implements Serializable {
	

    public static final String CONSULTA_LISTAR_ESPECIALIDAD= "Especialidad.ListarEspecialidad";
    public static final String CONSULTA_LISTAR_ESPECIALIDAD_REMISION= "Especialidad.ListarEspecialidadRemision";
    /**
	 * Codigo del medico dentro de la IPS
	 */
    
    @Column(name="especialidad_codigo")
	private String codigo; 
	/**
	 * LLave primaria del medico.
	 */
    @Id
    @Column(name="especialidad_id")
	private Long id;
	/**
	 * Nombre del medico.
	 */
    @Column(name="especialidad_nombre")
	private String nombre;
	
	/**
	 * Medicos de esta especialidad.
	 *
	 **/
    
    @OneToMany(mappedBy = "especialidad")
	private List<Medico> medicos;
	
	
	/**
	 * Remisiones de esta especialidad.
	 *
	 **/
    
    @OneToMany(mappedBy = "especialidad")
	private List<Remision> remision;
	
	/**
	 * @return the remision
	 */
	public List<Remision> getRemision() {
		return remision;
	}

	/**
	 * @param remision the remision to set
	 */
	public void setRemision(List<Remision> remision) {
		this.remision = remision;
	}

	/**
	 * Cosntructor sin parametros.
	 */
	public Especialidad() {
		super();
	}

	/**
	 * @param codigo
	 * @param id
	 * @param nombre
	 */
	public Especialidad(String codigo, Long id, String nombre) {
		super();
		this.codigo = codigo;
		this.id = id;
		this.nombre = nombre;
	}

	/**
	 * @return the codigo
	 */
	public String getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo the codigo to set
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the medicos
	 */
	public List<Medico> getMedicos() {
		return medicos;
	}

	/**
	 * @param medicos the medicos to set
	 */
	public void setMedicos(List<Medico> medicos) {
		this.medicos = medicos;
	}   
	
    @Override
	public String toString(){
		return nombre;
	}
	
}
